package top.aiprogram.user.controller;

import org.apache.commons.io.FileUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import top.aiprogram.user.entity.User;


import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;

@Controller
@RequestMapping("user")//请求路径
public class UserController {
//请求处理方法
//    @RequestMapping("/test")
//    public String testUser(){
//        return "user";
//    }
//    @RequestMapping("/demo")
//    public String demoUser(){
//        return "user";
//    }
//    参数传递springmvc向前端传值的两种方式
//        @RequestMapping("/test")
//    public ModelAndView testUser(){
//            ModelAndView modelAndView = new ModelAndView();
//            modelAndView.setViewName("user");
//            User user = new User();
//            user.setId(22);
//            user.setName("laowang");
//            modelAndView.addObject("user", user);
//        return modelAndView;
//    }

//        @RequestMapping("/test")
//    public String testUser(ModelMap modelMap){
//            User user = new User();
//            user.setId(22);
//            user.setName("laowang");
//            modelMap.addAttribute("user", user);
//        return "user";
//    }

//    重定向 redirect
//    @RequestMapping("/test")
//    public String testUser(){
//        return "redirect:/user/demo";
//    }
//    @RequestMapping("/demo")
//    public String demoUser(){
//        return "demo";
//    }

//    拿到get参数和改名
//        @RequestMapping("/test/{id}/{name}")
//    public String testUser(ModelMap modelMap, @PathVariable("id") Integer sid,@PathVariable String name){
//            System.out.println(sid+name);
//        return "user";
//        }


//    获得post参数方法一
//    @RequestMapping("/test")
//    public String testUser(ModelMap modelMap, HttpServletRequest request){
//        System.out.println(request.getParameter("id")+request.getParameter("name"));
//        return "user";
//    }
//    @RequestMapping("/demo")
//    public String demoUser(){
//        return "demo";
//    }
// 第二种方法获得post参数  问题为什这种方法能返回到页面
//    @RequestMapping("/test")
//    public String testUser(ModelMap modelMap,User user){
//        System.out.println(user.getName()+user.getId());
//        return "user";
//    }
//    @RequestMapping("/demo")
//    public String demoUser(){
//        return "demo";
//    }

//    向web端输出json
//    @RequestMapping("/test")
//    @ResponseBody
//    public User testUser(){
//        User user = new User();
//        user.setId(22);
//        user.setName("laowang");
//        return user;
//    }
//    @RequestMapping("/demo")
//    public String demoUser(){
//        return "user";
//    }




//    获得前端json数据
    @RequestMapping("/test")
    public String testUser(@RequestBody User user){
        System.out.println(user.getId()+user.getName());
        return "user";
    }
    @RequestMapping("/demo")
    public String demoUser(){
        return "demo";
    }
    //文件上传
    @RequestMapping("/upload")
    public String upload(MultipartFile file, HttpServletRequest request) throws IOException {
        String name = file.getOriginalFilename();
        File uploadF = new File("/" + name);
        file.transferTo(uploadF);
        return "demo";
    }
    //文件下载
    @RequestMapping("/load")
    public ResponseEntity<byte []> download() throws IOException {
        String path = "D:"+"\\"+"1.png";
        File file = new File(path);
        HttpHeaders headers = new HttpHeaders();
        headers.setContentDispositionFormData("attachment",path);
        headers.setContentType(MediaType.IMAGE_PNG);
        return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
    }

}
